<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">

	<title>ASRangeController Class Reference</title>

	<link rel="stylesheet" href="../css/style.css">
	<meta name="viewport" content="initial-scale=1, maximum-scale=1.4">
	<meta name="generator" content="appledoc 2.2.1 (build 1334)">
</head>
<body class="appledoc">
	<header>
		<div class="container" class="hide-in-xcode">
			
			<h1 id="library-title">
				<a href="../index.html">  </a>
			</h1>

			<p id="developer-home">
				<a href="../index.html">AsyncDisplayKit</a>
			</p>
			
		</div>
	</header>

	<aside>
		<div class="container">
			<nav>
				<ul id="header-buttons" role="toolbar">
					<li><a href="../index.html">Index</a></li>
<li><a href="../hierarchy.html">Hierarchy</a></li>

					<li id="on-this-page" role="navigation">
						<label>
							On This Page

							<div class="chevron">
								<div class="chevy chevron-left"></div>
								<div class="chevy chevron-right"></div>
							</div>

							<select id="jump-to">
	<option value="top">Jump To&#133;</option>
	
	<option value="overview">Overview</option>
	

	
	
	<option value="tasks">Tasks</option>
	
	

	
	
	<optgroup label="Properties">
		
		<option value="//api/name/dataSource">dataSource</option>
		
		<option value="//api/name/delegate">delegate</option>
		
		<option value="//api/name/layoutController">layoutController</option>
		
	</optgroup>
	

	

	
	<optgroup label="Instance Methods">
		
		<option value="//api/name/configureContentView:forCellNode:">- configureContentView:forCellNode:</option>
		
		<option value="//api/name/setNeedsUpdate">- setNeedsUpdate</option>
		
		<option value="//api/name/updateIfNeeded">- updateIfNeeded</option>
		
	</optgroup>
	
	
</select>
						</label>
					</li>
				</ul>
			</nav>
		</div>
	</aside>

	<article>
		<div id="overview_contents" class="container">
			<div id="content">
				<main role="main">
					<h1 class="title">ASRangeController Class Reference</h1>

					
					<div class="section section-specification"><table cellspacing="0"><tbody>
						<tr>
	<th>Inherits from</th>
	<td>ASDealloc2MainObject</td>
</tr><tr>
	<th>Conforms to</th>
	<td>ASDataControllerDelegate</td>
</tr><tr>
	<th>Declared in</th>
	<td>ASRangeController.h</td>
</tr>
						</tbody></table></div>
					

                    
					
					<div class="section section-overview">
						<a title="Overview" name="overview"></a>
						<h2 class="subtitle subtitle-overview">Overview</h2>
						<p>Working range controller.</p>

<p>Used internally by ASTableView and ASCollectionView.  It is paired with ASDataController.
It is designed to support custom scrolling containers as well.  Observes the visible range, maintains
&ldquo;working ranges&rdquo; to trigger network calls and rendering, and is responsible for driving asynchronous layout of cells.
This includes cancelling those asynchronous operations as cells fall outside of the working ranges.</p>
					</div>
					
					

					
					
					<div class="section section-tasks">
						<a title="Tasks" name="tasks"></a>
						

						
						

						<div class="task-list">
							<div class="section-method">
	<a name="//api/name/setNeedsUpdate" title="setNeedsUpdate"></a>
	<h3 class="method-title"><code><a href="#//api/name/setNeedsUpdate">&ndash;&nbsp;setNeedsUpdate</a></code>
</h3>

	<div class="method-info">
		<div class="pointy-thing"></div>

		<div class="method-info-container">
			
			
			<div class="method-subsection brief-description">
				<p>Notify the range controller that the visible range has been updated.
This is the primary input call that drives updating the working ranges, and triggering their actions.
The ranges will be updated in the next turn of the main loop, or when -updateIfNeeded is called.</p>
			</div>
			
		    

			<div class="method-subsection method-declaration"><code>- (void)setNeedsUpdate</code></div>

		    
			

			

			

			

			

			

			
			<div class="method-subsection declared-in-section">
				<h4 class="method-subtitle">Declared In</h4>
				<p><code class="declared-in-ref">ASRangeController.h</code></p>
			</div>
			
			
		</div>
	</div>
</div><div class="section-method">
	<a name="//api/name/updateIfNeeded" title="updateIfNeeded"></a>
	<h3 class="method-title"><code><a href="#//api/name/updateIfNeeded">&ndash;&nbsp;updateIfNeeded</a></code>
</h3>

	<div class="method-info">
		<div class="pointy-thing"></div>

		<div class="method-info-container">
			
			
			<div class="method-subsection brief-description">
				<p>Update the ranges immediately, if -setNeedsUpdate has been called since the last update.
This is useful because the ranges must be updated immediately after a cell is added
into a table/collection to satisfy interface state API guarantees.</p>
			</div>
			
		    

			<div class="method-subsection method-declaration"><code>- (void)updateIfNeeded</code></div>

		    
			

			

			

			

			

			

			
			<div class="method-subsection declared-in-section">
				<h4 class="method-subtitle">Declared In</h4>
				<p><code class="declared-in-ref">ASRangeController.h</code></p>
			</div>
			
			
		</div>
	</div>
</div><div class="section-method">
	<a name="//api/name/configureContentView:forCellNode:" title="configureContentView:forCellNode:"></a>
	<h3 class="method-title"><code><a href="#//api/name/configureContentView:forCellNode:">&ndash;&nbsp;configureContentView:forCellNode:</a></code>
</h3>

	<div class="method-info">
		<div class="pointy-thing"></div>

		<div class="method-info-container">
			
			
			<div class="method-subsection brief-description">
				<p>Add the sized node for <code>indexPath</code> as a subview of <code>contentView</code>.</p>
			</div>
			
		    

			<div class="method-subsection method-declaration"><code>- (void)configureContentView:(UIView *)<em>contentView</em> forCellNode:(ASCellNode *)<em>node</em></code></div>

		    
			
			<div class="method-subsection arguments-section parameters">
				<h4 class="method-subtitle parameter-title">Parameters</h4>
				<table class="argument-def parameter-def">
				
					<tr>
						<th scope="row" class="argument-name"><code>contentView</code></th>
						<td><p>UIView to add a (sized) node&rsquo;s view to.</p></td>
					</tr>
				
					<tr>
						<th scope="row" class="argument-name"><code>node</code></th>
						<td><p>The cell node to be added.</p></td>
					</tr>
				
				</table>
			</div>
			

			

			

			

			

			

			
			<div class="method-subsection declared-in-section">
				<h4 class="method-subtitle">Declared In</h4>
				<p><code class="declared-in-ref">ASRangeController.h</code></p>
			</div>
			
			
		</div>
	</div>
</div><div class="section-method">
	<a name="//api/name/layoutController" title="layoutController"></a>
	<h3 class="method-title"><code><a href="#//api/name/layoutController">&nbsp;&nbsp;layoutController</a></code>
</h3>

	<div class="method-info">
		<div class="pointy-thing"></div>

		<div class="method-info-container">
			
			
			<div class="method-subsection brief-description">
				<p>An object that describes the layout behavior of the ranged component (table view, collection view, etc.)</p>
			</div>
			
		    

			<div class="method-subsection method-declaration"><code>@property (nonatomic, strong) id&lt;ASLayoutController&gt; layoutController</code></div>

		    
			

			

			

			
			<div class="method-subsection discussion-section">
				<h4 class="method-subtitle">Discussion</h4>
				<p>Used primarily for providing the current range of index paths and identifying when the
range controller should invalidate its range.</p>
			</div>
			

			

			

			
			<div class="method-subsection declared-in-section">
				<h4 class="method-subtitle">Declared In</h4>
				<p><code class="declared-in-ref">ASRangeController.h</code></p>
			</div>
			
			
		</div>
	</div>
</div><div class="section-method">
	<a name="//api/name/dataSource" title="dataSource"></a>
	<h3 class="method-title"><code><a href="#//api/name/dataSource">&nbsp;&nbsp;dataSource</a></code>
</h3>

	<div class="method-info">
		<div class="pointy-thing"></div>

		<div class="method-info-container">
			
			
			<div class="method-subsection brief-description">
				<p>The underlying data source for the range controller</p>
			</div>
			
		    

			<div class="method-subsection method-declaration"><code>@property (nonatomic, weak) id&lt;ASRangeControllerDataSource&gt; dataSource</code></div>

		    
			

			

			

			

			

			

			
			<div class="method-subsection declared-in-section">
				<h4 class="method-subtitle">Declared In</h4>
				<p><code class="declared-in-ref">ASRangeController.h</code></p>
			</div>
			
			
		</div>
	</div>
</div><div class="section-method">
	<a name="//api/name/delegate" title="delegate"></a>
	<h3 class="method-title"><code><a href="#//api/name/delegate">&nbsp;&nbsp;delegate</a></code>
</h3>

	<div class="method-info">
		<div class="pointy-thing"></div>

		<div class="method-info-container">
			
			
			<div class="method-subsection brief-description">
				<p>Delegate for handling range controller events. Must not be nil.</p>
			</div>
			
		    

			<div class="method-subsection method-declaration"><code>@property (nonatomic, weak) id&lt;ASRangeControllerDelegate&gt; delegate</code></div>

		    
			

			

			

			

			

			

			
			<div class="method-subsection declared-in-section">
				<h4 class="method-subtitle">Declared In</h4>
				<p><code class="declared-in-ref">ASRangeController.h</code></p>
			</div>
			
			
		</div>
	</div>
</div>
						</div>
						
					</div>
					
					

                    
                    
          
				</main>

				<footer>
					<div class="footer-copyright">
						
						<p class="copyright">Copyright &copy; 2016 AsyncDisplayKit. All rights reserved. Updated: 2016-11-05</p>
						
						
						<p class="generator">Generated by <a href="http://appledoc.gentlebytes.com">appledoc 2.2.1 (build 1334)</a>.</p>
						
					</div>
				</footer>
			</div>
		</div>
	</article>

	<script src="../js/script.js"></script>
</body>
</html>